#pragma once

class CRibbonFullscreenButton;
class CBCGPBaseRibbonElement;
class CBCGPRibbonCmdUI;
// CMFCRibbonFullscreenBar

class CMFCRibbonFullscreenBar : public CBCGPRibbonBar
{
	friend class CBCGPFrameImpl;
	
	DECLARE_DYNAMIC(CMFCRibbonFullscreenBar)

public:
	CMFCRibbonFullscreenBar();
	virtual ~CMFCRibbonFullscreenBar();

	BOOL Create(DWORD dwStyle, CWnd* pParentWnd, UINT uID);

protected:

	CString      m_strInfo;
	CStringArray m_arElementLabels;
	CStringArray m_arExElementLabels;

	CArray<CRibbonFullscreenButton*, CRibbonFullscreenButton*> m_arElements;
	CArray<CRibbonFullscreenButton*, CRibbonFullscreenButton*> m_arExElements;

// Operations
public:
	void AddElement(CRibbonFullscreenButton* pElement, LPCTSTR lpszLabel, BOOL bIsVisible = TRUE);
	void AddExtendedElement(CRibbonFullscreenButton* pElement, LPCTSTR lpszLabel, BOOL bIsVisible = TRUE);

	BOOL RemoveElement(UINT uiID);
	void RemoveAll();

// Overrides
public:
	virtual void RecalcLayout();

protected:
	virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
	virtual HDWP SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags, HDWP hdwp = NULL);
	virtual BOOL IsMainRibbonBar() const { return FALSE; }
	virtual CBCGPBaseRibbonElement* HitTest(CPoint point, BOOL bCheckActiveCategory = FALSE, BOOL bCheckPanelCaption = FALSE);
	
	virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);

protected:
	DECLARE_MESSAGE_MAP()
public:
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnPaint();
	afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
	afx_msg LRESULT OnUpdateShadows(WPARAM,LPARAM);
};


